• Activated Contracts from Regione Lombardia
• Ceased Contracts from Regione Lombardia
• ATECO Code
• GeoJSON Lombardia
• Load Datasets
• Remove Outliers
• Join with ATECO Code Datasets
• Manage null values
df_lav_att, df_lav_ces, df_ateco, df_geojson = load_datasets()
df_lav_att
| DATA | GENERE | ETA | SETTOREECONOMICODETTAGLIO | TITOLOSTUDIO | CONTRATTO | MODALITALAVORO | PROVINCIAIMPRESA | ITALIANO | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 09/05/2020 | F | 60 | Attività di famiglie e convivenze come datori ... | NESSUN TITOLO DI STUDIO | LAVORO DOMESTICO | TEMPO PIENO | BERGAMO | UCRAINA |
| 1 | 12/07/2019 | M | 43 | Gestioni di funicolari, ski-lift e seggiovie s... | LICENZA MEDIA | LAVORO A TEMPO DETERMINATO | TEMPO PIENO | BERGAMO | ITALIA |
| 2 | 05/06/2013 | F | 20 | Fabbricazione di altre apparecchiature elettri... | LICENZA MEDIA | APPRENDISTATO PROFESSIONALIZZANTE O CONTRATTO ... | TEMPO PIENO | BERGAMO | ITALIA |
| 3 | 12/03/2010 | F | 28 | Alberghi | DIPLOMA DI ISTRUZIONE SECONDARIA SUPERIORE CH... | LAVORO INTERMITTENTE A TEMPO DETERMINATO | NON DEFINITO | BERGAMO | ITALIA |
| 4 | 06/04/2021 | F | 49 | Rifugi di montagna | LICENZA MEDIA | LAVORO INTERMITTENTE | NON DEFINITO | BERGAMO | ITALIA |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 9579789 | 01/03/2020 | M | 52 | Lavori di meccanica generale | LICENZA MEDIA | LAVORO A TEMPO DETERMINATO | TEMPO PIENO | BERGAMO | ITALIA |
| 9579790 | 06/09/2010 | M | 61 | Lavori di meccanica generale | NESSUN TITOLO DI STUDIO | LAVORO A TEMPO INDETERMINATO | TEMPO PIENO | BERGAMO | ALBANIA |
| 9579791 | 06/11/2021 | M | 37 | Fabbricazione di parti ed accessori per bicicl... | NESSUN TITOLO DI STUDIO | LAVORO A TEMPO DETERMINATO | TEMPO PIENO | BERGAMO | SENEGAL |
| 9579792 | 02/02/2010 | M | 35 | Fabbricazione di parti ed accessori per bicicl... | LICENZA MEDIA | LAVORO INTERINALE (O A SCOPO DI SOMMINISTRAZIO... | TEMPO PIENO | BERGAMO | SENEGAL |
| 9579793 | 05/07/2012 | F | 39 | Commercio all'ingrosso di abbigliamento e acce... | LICENZA MEDIA | LAVORO INTERINALE (O A SCOPO DI SOMMINISTRAZIO... | NaN | BERGAMO | ITALIA |
9579794 rows × 9 columns
plot_age_distribution(df_lav_att)
plot_age_distribution(df_lav_ces)
plot_time_distribution(df_lav_att, "Activated Contracts")
plot_time_distribution(df_lav_ces, "Ceased Contracts")
df_lav_att.groupby(['SETTOREECONOMICODETTAGLIO'])['SETTOREECONOMICODETTAGLIO'].count().to_frame()
| SETTOREECONOMICODETTAGLIO | |
|---|---|
| SETTOREECONOMICODETTAGLIO | |
| Acquacoltura in acqua di mare salmastra o lagunare e servizi connessi | 949 |
| Acquacoltura in acque dolci e servizi connessi | 545 |
| Affari esteri | 723 |
| Affittacamere per brevi soggiorni case ed appartamenti per vacanze bed and breakfast residence | 8729 |
| Affitto di aziende | 342 |
| ... | ... |
| Trattamento igienico del latte | 984 |
| Trivellazioni e perforazioni | 1599 |
| Università popolare | 71 |
| Utilizzo di aree forestali | 1277 |
| Villaggi turistici | 906 |
1224 rows × 1 columns
df_lav_att = pd.merge(df_lav_att, df_ateco, how="left", left_on="SETTOREECONOMICODETTAGLIO", right_on="DescrizioneAteco")
df_lav_ces = pd.merge(df_lav_ces, df_ateco, how="left", left_on="SETTOREECONOMICODETTAGLIO", right_on="DescrizioneAteco")
df_lav_att.groupby(['MacroAteco', 'MacroDescrizione'])['MacroAteco'].count().to_frame()
| MacroAteco | ||
|---|---|---|
| MacroAteco | MacroDescrizione | |
| A | AGRICOLTURA SILVICOLTURA E PESCA | 191464 |
| B | ESTRAZIONE DI MINERALI DA CAVE E MINIERE | 6122 |
| C | ATTIVITÀ MANIFATTURIERE | 1683362 |
| D | FORNITURA DI ENERGIA ELETTRICA GAS VAPORE E ARIA CONDIZIONATA | 11992 |
| E | FORNITURA DI ACQUA RETI FOGNARIE ATTIVITÀ DI GESTIONE DEI RIFIUTI E RISANAMENTO | 30274 |
| F | COSTRUZIONI | 537945 |
| G | COMMERCIO ALLINGROSSO E AL DETTAGLIO RIPARAZIONE DI AUTOVEICOLI E MOTOCICLI | 976827 |
| H | TRASPORTO E MAGAZZINAGGIO | 467976 |
| I | ATTIVITÀ DEI SERVIZI DI ALLOGGIO E DI RISTORAZIONE | 1264749 |
| J | SERVIZI DI INFORMAZIONE E COMUNICAZIONE | 713625 |
| K | ATTIVITÀ FINANZIARIE E ASSICURATIVE | 66430 |
| L | ATTIVITÀ IMMOBILIARI | 25336 |
| M | ATTIVITÀ PROFESSIONALI SCIENTIFICHE E TECNICHE | 420783 |
| N | NOLEGGIO AGENZIE DI VIAGGIO SERVIZI DI SUPPORTO ALLE IMPRESE | 869718 |
| O | AMMINISTRAZIONE PUBBLICA E DIFESA ASSICURAZIONE SOCIALE OBBLIGATORIA | 87960 |
| P | ISTRUZIONE | 849114 |
| Q | SANITÀ E ASSISTENZA SOCIALE | 296441 |
| R | ATTIVITÀ ARTISTICHE SPORTIVE DI INTRATTENIMENTO E DIVERTIMENTO | 315916 |
| S | ALTRE ATTIVITÀ DI SERVIZI | 213803 |
| T | ATTIVITÀ DI FAMIGLIE E CONVIVENZE COME DATORI DI LAVORO PER PERSONALE DOMESTICO PRODUZIONE DI BENI E SERVIZI INDIFFERENZIATI PER USO PROPRIO DA PARTE DI FAMIGLIE E CONVIVENZE | 348738 |
| U | ORGANIZZAZIONI ED ORGANISMI EXTRATERRITORIALI | 1423 |
# Activated Contracts
print("Activated Contracts")
missing = df_lav_att.isnull().sum()
percent_missing = df_lav_att.isnull().sum() * 100 / len(df_lav_att)
missing_value_df = pd.DataFrame({ 'Missing': missing, 'Missing %': percent_missing })
missing_value_df
Activated Contracts
| Missing | Missing % | |
|---|---|---|
| DATA | 0 | 0.000000 |
| GENERE | 0 | 0.000000 |
| ETA | 0 | 0.000000 |
| SETTOREECONOMICODETTAGLIO | 2881 | 0.030169 |
| TITOLOSTUDIO | 568 | 0.005948 |
| CONTRATTO | 0 | 0.000000 |
| MODALITALAVORO | 439235 | 4.599527 |
| PROVINCIAIMPRESA | 0 | 0.000000 |
| ITALIANO | 0 | 0.000000 |
| CodAteco | 169570 | 1.775682 |
| DescrizioneAteco | 169570 | 1.775682 |
| MacroAteco | 169570 | 1.775682 |
| MacroDescrizione | 169570 | 1.775682 |
# Ceased Contracts
print("Ceased Contracts")
missing = df_lav_ces.isnull().sum()
percent_missing = df_lav_ces.isnull().sum() * 100 / len(df_lav_ces)
missing_value_df = pd.DataFrame({ 'Missing': missing, 'Missing %': percent_missing })
missing_value_df
Ceased Contracts
| Missing | Missing % | |
|---|---|---|
| DATA | 0 | 0.000000 |
| GENERE | 0 | 0.000000 |
| ETA | 0 | 0.000000 |
| SETTOREECONOMICODETTAGLIO | 1014 | 0.027346 |
| TITOLOSTUDIO | 411 | 0.011084 |
| CONTRATTO | 0 | 0.000000 |
| MODALITALAVORO | 0 | 0.000000 |
| PROVINCIAIMPRESA | 0 | 0.000000 |
| ITALIANO | 0 | 0.000000 |
| CodAteco | 66950 | 1.805542 |
| DescrizioneAteco | 66950 | 1.805542 |
| MacroAteco | 66950 | 1.805542 |
| MacroDescrizione | 66950 | 1.805542 |
plot_diff_att_ces(df_lav_att, df_lav_ces)
plot_ateco_barplot(df_lav_att, df_lav_ces)
plot_geo_data(df_lav_att, df_geojson, "oranges")
plot_geo_data(df_lav_att, df_geojson, "blues")
• Train and Test Data
• Statistical Models
• ML & DL Models
• Model Evaluation
dataset = prepare_dataset(df_lav_att, df_lav_ces)
train, test = get_train_test(dataset, "2009-01", "2016-12", "2017-01", "2019-12")
plot_train_test(train, test)
arima_model = arima(train, test)
MAPE - Mean Absolute Percentage Error: 18.57%
prophet_model = prophet(train, test)
23:15:47 - cmdstanpy - INFO - Chain [1] start processing 23:15:47 - cmdstanpy - INFO - Chain [1] done processing
MAPE - Mean Absolute Percentage Error: 18.64%
svr_model = svr(train, test)
MAPE - Mean Absolute Percentage Error: 8.32%
mlp_model = mlp(train, test)
MAPE - Mean Absolute Percentage Error: 12.73%
lstm_model = lstm(train, test)
MAPE - Mean Absolute Percentage Error: 12.41%
plot_prediction(df_plot)
plot_prediction_and_actual(df_plot)
mape_on_predictions(df_plot)
ARIMA MAPE : 38.62% PROPHET MAPE : 46.96% SVR MAPE : 51.07% MLP MAPE : 46.79% LSTM MAPE : 47.14%
• Evaluation on Test data
• Evaluation on forecasting 2020 - 2021
• Work with more historical data
• Cross Validation and Hyperparameter Tuning